package com.pdfbox.sample.quickstart;

import java.io.File;
import java.io.IOException;

import org.apache.pdfbox.Loader;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.encryption.AccessPermission;
import org.apache.pdfbox.pdmodel.encryption.StandardProtectionPolicy;

public class _11EncryptingDoc {

  public static void main(String[] args) throws IOException {
    String existFileName = "E:/PdfBox_Examples/周报_add_png.pdf";
    String exportFileName = "E:/PdfBox_Examples/周报_加密.pdf";

    // 加密的三方包找不到，看下文档导入包即可

    // 第1步:加载现有PDF文档
    File file = new File(existFileName);
//    PDDocument document = PDDocument.load(file);
    PDDocument document = Loader.loadPDF(file);

    // 第2步:创建访问权限对象
    AccessPermission ap = new AccessPermission();

    // 第3步:创建StandardProtectionPolicy对象
    StandardProtectionPolicy spp = new StandardProtectionPolicy("1234", "1234", ap);

    // 第4步:设置加密密钥的长度
    spp.setEncryptionKeyLength(128);

    // 第5步:设置权限
    spp.setPermissions(ap);

    // 第6步:保护文档
    document.protect(spp);

    System.out.println("Document encrypted");

    // 第7步:保存文档
    document.save(exportFileName);

    // 第8步:关闭文档
    document.close();

    System.out.println("export " + exportFileName + " success");
  }

}
